package com.crm.crm.domain.vo;

import lombok.Data;

import java.util.List;

/**
 * //这是给销售统计封装的分页查询结果格式用的工具类
 * 通用分页响应结果封装类
 * 支持任意实体类型 T
 */
@Data
public class PageCountResult<T> {
    private List<T> rows;   // 数据列表
    private int total;      // 总数
    private int code;       // 状态码
    private String msg;     // 消息

    /**
     * 私有构造函数，防止外部直接 new
     */
    private PageCountResult() {}

    /**
     * 静态工厂方法，用于快速构建响应对象
     *
     * @param data  数据列表
     * @param total 总条数
     * @param <T>   泛型类型
     * @return 构建好的 PageCountResult 对象
     */
    public static <T> PageCountResult<T> of(List<T> data, int total) {
        PageCountResult<T> result = new PageCountResult<>();
        result.setRows(data);
        result.setTotal(total);
        result.setCode(200);
        result.setMsg("查询成功");
        return result;
    }

    /**
     * 支持自定义 code 和 msg
     */
    public static <T> PageCountResult<T> of(List<T> data, int total, int code, String msg) {
        PageCountResult<T> result = new PageCountResult<>();
        result.setRows(data);
        result.setTotal(total);
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}
